import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Arquivo {
	
	public static void salvar(String arquivo, Object o) throws IOException {
		ObjectOutputStream fw = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(arquivo)));
		fw.writeObject(o);
		fw.close();
	}
	
	public static void salvarEventos(AgendaMultitudo e){
		for(int i = 0; i < e.getEventos().size(); i++){
			try {
				Arquivo.salvar("Eventos.data",e.getEventos().get(i)+"\r\n");
			} catch (IOException o) {
				System.out.println("Erro.");
			}
		}
	}
	
	public static void salvarUsuario(AgendaMultitudo u){
		for(int i = 0; i < u.getUsuario().size(); i++){
			try {
				Arquivo.salvar("Usuario.data",u.getUsuario().get(i)+"\r\n");
			} catch (IOException o) {
				System.out.println("Erro.");
			}
		}
	}
	
	public static void salvarContatos(AgendaMultitudo c){
		for(int i = 0; i < c.getContatos().size(); i++){
			try {
				Arquivo.salvar("Contatos.data",c.getContatos().get(i)+"\r\n");
			} catch (IOException o) {
				System.out.println("Erro.");
			}
		}
	}
	
	public static void carregarEventos(String arquivo, AgendaMultitudo ag) throws Exception{
		ObjectInputStream ev = new ObjectInputStream(new BufferedInputStream(new FileInputStream(arquivo)));
		ev.close();
		while(true){
			try {
				Evento evento = (Evento)ev.readObject();
				ag.cadastraEventos(evento);
			} catch (IOException e1) {
				break;
			}
		}
	}
	
	public static void carregarUsuario(String arquivo,  AgendaMultitudo ag)throws Exception{
		ObjectInputStream usu = new ObjectInputStream(new BufferedInputStream(new FileInputStream(arquivo)));
		usu.close();
		while (true){
			try{
				Usuario usuario = (Usuario)usu.readObject();
				ag.cadastraUsuario(usuario);
			}catch(IOException e1){
				break;
			}
		}
	}
	
	public static void carregarContatos(String arquivo,  AgendaMultitudo ag) throws Exception{
		ObjectInputStream con = new ObjectInputStream(new BufferedInputStream(new FileInputStream(arquivo)));
		con.close();
		while (true){
			try{
				Contato contato = (Contato)con.readObject();
				ag.cadastraContatos(contato);
			}catch (IOException e1){
				break;
			}
		}
	}
}